
FIND_PATH(TRILINOS_INCLUDE_DIR Teuchos_Utils.hpp PATHS /usr/include/trilinos )


SET(CMAKE_REQUIRED_INCLUDES "${TRILINOS_INCLUDE_DIR};${CMAKE_REQUIRED_INCLUDES}")
MESSAGE( STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}")


CHECK_INCLUDE_FILE_CXX("Teuchos_Utils.hpp" HAVE_TRILINOS_TEUCHOS  )
IF ( TRILINOS_LIB_TEUCHOS )
  SET( CMAKE_REQUIRED_FLAGS "-lteuchos;${CMAKE_REQUIRED_FLAGS}" )
ENDIF( TRILINOS_LIB_TEUCHOS )

CHECK_INCLUDE_FILE_CXX(Epetra_Vector.h HAVE_TRILINOS_EPETRA )
CHECK_INCLUDE_FILE_CXX(EpetraExt_VectorIn.h HAVE_TRILINOS_EPETRAEXT )
CHECK_INCLUDE_FILE_CXX(Trilinos_Util_CrsMatrixGallery.h HAVE_TRILINOS_TRIUTILS )
CHECK_INCLUDE_FILE_CXX(AztecOO_config.h HAVE_TRILINOS_AZTECOO )
#CHECK_INCLUDE_FILE_CXX(AztecOO.h HAVE_TRILINOS_AZTECOO )
CHECK_INCLUDE_FILE_CXX(AztecOO_config.h HAVE_AZTECOO_TEUCHOS )
CHECK_INCLUDE_FILE_CXX(Amesos_config.h HAVE_TRILINOS_AMESOS )#"-lteuchos ${MPI_EXTRA_LIBRARY} ${MPI_LIBRARY}")
CHECK_INCLUDE_FILE_CXX(Ifpack_config.h HAVE_TRILINOS_IFPACK )#"-lteuchos ${MPI_EXTRA_LIBRARY} ${MPI_LIBRARY}")
CHECK_INCLUDE_FILE_CXX(ml_config.h HAVE_TRILINOS_ML )#"-lteuchos ${MPI_EXTRA_LIBRARY} ${MPI_LIBRARY}")

CHECK_INCLUDE_FILE_CXX(Galeri_config.h HAVE_TRILINOS_GALERI ) #"-lteuchos ${MPI_EXTRA_LIBRARY} ${MPI_LIBRARY}")
CHECK_INCLUDE_FILE_CXX(Anasazi_config.h HAVE_TRILINOS_ANASAZI )#"-lteuchos ${MPI_EXTRA_LIBRARY} ${MPI_LIBRARY}")
CHECK_INCLUDE_FILE_CXX(NOX_Config.h HAVE_TRILINOS_NOX )#"-lteuchos ${MPI_EXTRA_LIBRARY} ${MPI_LIBRARY}")
CHECK_INCLUDE_FILE_CXX(NOX_Epetra.H HAVE_TRILINOS_NOXEPETRA )#"-lteuchos ${MPI_EXTRA_LIBRARY} ${MPI_LIBRARY}")
#CHECK_INCLUDE_FILE_CXX(NOX_LAPACK.H HAVE_TRILINOS_NOXLAPACK )#"-lteuchos ${MPI_EXTRA_LIBRARY} ${MPI_LIBRARY}")

IF( HAVE_TRILINOS_TEUCHOS )
  ADD_DEFINITIONS( -DHAVE_TRILINOS_TEUCHOS -DHAVE_TRILINOS_EPETRA -DHAVE_TRILINOS_EPETRAEXT -DHAVE_TRILINOS_TRIUTILS -DHAVE_TRILINOS_AZTECOO -DHAVE_AZTECOO_TEUCHOS -DHAVE_TRILINOS_AMESOS -DHAVE_TRILINOS_IFPACK  -DHAVE_TRILINOS_ML -DML_MPI -DHAVE_ML_TEUCHOS -DHAVE_ML_EPETRA -DHAVE_ML_AZTECOO -DHAVE_TRILINOS_GALERI -DHAVE_TRILINOS_ANASAZI -DHAVE_TRILINOS_NOX -DHAVE_TRILINOS_NOXEPETRA -DHAVE_TRILINOS_NOXLAPACK)
ENDIF( HAVE_TRILINOS_TEUCHOS )


FIND_LIBRARY(TRILINOS_LIB_ML        trilinos_ml        PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_GALERI    trilinos_galeri    PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_ANASAZI   trilinos_anasazi   PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_IFPACK    trilinos_ifpack    PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_AMESOS    trilinos_amesos    PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_AZTECOO   trilinos_aztecoo   PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_EPETRAEXT trilinos_epetraext PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_TRIUTILS  trilinos_triutils  PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_EPETRA    trilinos_epetra    PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_NOX       trilinos_nox       PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_NOXEPETRA trilinos_noxepetra PATHS /usr/lib )
#FIND_LIBRARY(TRILINOS_LIB_NOXLAPACK trilinos_noxlapack PATHS /usr/lib )
FIND_LIBRARY(TRILINOS_LIB_TEUCHOS   trilinos_teuchos   PATHS /usr/lib )
FIND_LIBRARY(EXPAT_LIB              expat              PATHS /usr/lib )

SET(TRILINOS_LIBRARIES
  ${TRILINOS_LIB_ML}
  ${TRILINOS_LIB_GALERI}
  ${TRILINOS_LIB_ANASAZI}
  ${TRILINOS_LIB_IFPACK}
  ${TRILINOS_LIB_AMESOS}
  ${TRILINOS_LIB_AZTECOO}
  ${TRILINOS_LIB_EPETRAEXT}
  ${TRILINOS_LIB_TRIUTILS}
  ${TRILINOS_LIB_EPETRA}
  ${TRILINOS_LIB_NOX}
  ${TRILINOS_LIB_NOXEPETRA}
#  ${TRILINOS_LIB_NOXLAPACK}
  ${TRILINOS_LIB_TEUCHOS}
  ${EXPAT_LIB}
)

